package org.example.config;

import lombok.extern.slf4j.Slf4j;
import org.springframework.context.annotation.Configuration;

import java.net.Inet4Address;
import java.net.InetAddress;
import java.net.UnknownHostException;

@Configuration
@Slf4j
public class SnowFlakeWordIdConfig {
    /**
     * 动态指定sharding jdbc 的雪花算法中的属性work.id属性
     * 通过调⽤System.setProperty()的⽅式实现,可⽤容器的id 或者机器标识位
     * workId最⼤值 1L << 100，就是1024，即 0<= workId< 1024
     * {@linkSnowflakeShardingKeyGenerator#getWorkerId()}
     *
     */
    static {
        try {
            InetAddress ip4 = Inet4Address.getLocalHost();
            String addressIp = ip4.getHostAddress();
            String workerId = Math.abs(addressIp.hashCode()) % 1024 + "";
            System.setProperty("workerId", workerId);
            log.info("workId:{}", workerId);
        } catch (UnknownHostException e) {
            throw new RuntimeException(e);
        }
    }
}
